package com.object_.oriented_.polymorphic;

public class Test {
    public static void main(String[] args) {
        show(new Cat());  // 以 Cat 对象调用 show 方法
        show(new Dog());  // 以 Dog 对象调用 show 方法
        //a 编译类型  Car 执行类型
        Animal a = new Cat();  // 向上转型
        a.eat();               // 调用的是 Cat 的 eat
        Cat c = (Cat) a;        // 向下转型
        c.work();        // 调用的是 Cat 的 work
        int sum = 0;
        for (int i = 0; i < 5; i++) {
            sum += i;
            System.out.println("i=" + i);
            System.out.println("sum=" + i);

        }
        System.out.println("程序结束");
    }

    public static void show(Animal a) {
        a.eat();
        // 类型判断
        if (a instanceof Cat) {  // 猫做的事情
            // 向下转型
            Cat c = (Cat) a;
            c.work();
            c.age();
        } else if (a instanceof Dog) { // 狗做的事情
            // 向下转型
            Dog c = (Dog) a;
            c.work();
            c.age();
        }
    }
}
